﻿<!doctype html public '-//W3C//DTD HTML 4.0 Transitional //EN'>
<html>
<head>
<title>AspBox帮助文档</title>
<meta charset='UTF-8' />
<meta name='generator' content='EverEdit' />
<link href='statics/default.css' rel='stylesheet'></link>
<link href='statics/prettify.css' rel='stylesheet'></link>
<script type='text/javascript' src='statics/prettify.js'></script>
<script type='text/javascript' src='statics/jquery-1.10.2.min.js'></script>
<script type='text/javascript' src='statics/code.js'></script>
</head>
<body>
<h1>公共静态标签</h1>

<hr />

<p><a name="nolayout"></a></p>

<ul>
<li><strong>标签 {__NOLAYOUT__} 或 __NOLAYOUT__</strong></li>
</ul>

<blockquote>
  <p>除了在 layerout.html 以外的其他文件中设置，只要有这个标签，则不会载入 layerout.html 文件</p>
</blockquote>

<p><em>模板演示：</em></p>

<blockquote>
  <p>ACTION后台代码：
      App.View.Display("index.html")</p>
  
  <p>layerout.html 文件内容：
      {template 'common/header.html'}
      {__CONTENT__}
      {template 'common/footer.html'}</p>
  
  <p>index.html 文件内容：
      {__NOLAYOUT__}
      &lt;html xmlns="http://www.w3.org/1999/xhtml">
      &lt;head>
      &lt;title>测试地址&lt;/title>
      &lt;/head>
      &lt;body>
      内容...
      &lt;/body>
      &lt;/html></p>
</blockquote>

<hr />

<p><a name="content"></a></p>

<ul>
<li><strong>标签 {__CONTENT__} 或 __CONTENT__</strong></li>
</ul>

<blockquote>
  <p>layerout.html 里面设置，表示正常的替代内容</p>
</blockquote>

<hr />

<p><a name="charset"></a></p>

<ul>
<li><strong>标签 {__CHARSET__} 或 __CHARSET__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.CharSet}， 输出 页面编码</p>
</blockquote>

<hr />

<p><a name="url"></a></p>

<ul>
<li><strong>标签 {__URL__} 或 __URL__</strong></li>
</ul>

<blockquote>
  <p>等效：{:URL()}， 输出 当前页相对地址，带页面Hash参数</p>
</blockquote>

<hr />

<p><a name="self"></a></p>

<ul>
<li><strong>标签 {__SELF__} 或 __SELF__</strong></li>
</ul>

<blockquote>
  <p>等效：{:SELF()}， 输出 当前页相对地址，且不带页面Hash参数</p>
</blockquote>

<hr />

<p><a name="root"></a></p>

<ul>
<li><strong>标签 {__ROOT__} 或 __ROOT__</strong></li>
</ul>

<blockquote>
  <p>等效：{:RootPath()}， 输出 获取整个项目所在目录，若在根路径则返回空值</p>
</blockquote>

<hr />

<p><a name="rooturl"></a></p>

<ul>
<li><strong>标签 {__ROOTURL__} 或 __ROOTURL__</strong></li>
</ul>

<blockquote>
  <p>等效：{:RootURL()}， 输出 当前APP所在路径网址</p>
</blockquote>

<hr />

<p><a name="public"></a></p>

<ul>
<li><strong>标签 {__PUBLIC__} 或 __PUBLIC__ 或者 {__STATIC__} 或 __STATIC__</strong></li>
</ul>

<blockquote>
  <p>等效：等效：{:App.StaticPath}， 输出：/statics， 文件静态目录</p>
</blockquote>

<hr />

<p><a name="js"></a></p>

<ul>
<li><strong>标签 {__JS__} 或 __JS__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.JsPath}， 输出：/statics/js， js文件静态目录</p>
</blockquote>

<hr />

<p><a name="css"></a></p>

<ul>
<li><strong>标签 {__CSS__} 或 __CSS__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.CssPath}， 输出：/statics/css， css文件静态目录</p>
</blockquote>

<hr />

<p><a name="img"></a></p>

<ul>
<li><strong>标签 {__IMG__} 或 __IMG__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.ImgPath}， 输出：/statics/images， image文件静态目录</p>
</blockquote>

<hr />

<p><a name="upload"></a></p>

<ul>
<li><strong>标签 {__UPLOAD__} 或 __UPLOAD__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.UploadPath}， 输出：/statics/uploads， 上传文件静态目录</p>
</blockquote>

<hr />

<p><a name="theme"></a></p>

<ul>
<li><strong>标签 {__THEME__} 或 __THEME__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.View.Path_Theme}， 输出：/App/Tpl/default， 模板文件目录</p>
</blockquote>

<hr />

<p><a name="tmpl"></a></p>

<ul>
<li><strong>标签 {__TMPL__} 或 __TMPL__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.View.Path_TMPL}， 
      输出例：/App/Tpl/default/admin， /App/Tpl/default/home 等</p>
</blockquote>

<hr />

<p><a name="assets"></a></p>

<ul>
<li><strong>标签 {__ASSETS__} 或 __ASSETS__</strong></li>
</ul>

<blockquote>
  <p>等效：{:App.View.Path_Assets}， 
      输出例：
      /App/Tpl/default/admin/index （当 App.View.Locate = True 时，值包含 ACTION目录）
      或
      /App/Tpl/default/admin （当 App.View.Locate = False 时，值包不含 ACTION目录）</p>
</blockquote>

<hr />

<p><a name="m"></a></p>

<ul>
<li><strong>标签 {__M__} 或 __M__</strong></li>
</ul>

<blockquote>
  <p>输出：URL参数m (缺省值为 home)， 
      等同于全局变量 REQ_M 或 GROUP_NAME 或 APP_NAME
      模板里同样可引入标签 {REQ_M} 或 {GROUP_NAME} 或 {APP_NAME}</p>
</blockquote>

<hr />

<p><a name="c"></a></p>

<ul>
<li><strong>标签 {__C__} 或 __C__</strong></li>
</ul>

<blockquote>
  <p>输出：URL参数c (缺省值为 index)， 
      等同于全局变量 REQ_C 或 MODULE_NAME
      模板里同样可引入标签 {REQ_C} 或 {MODULE_NAME}</p>
</blockquote>

<hr />

<p><a name="a"></a></p>

<ul>
<li><strong>标签 {__A__} 或 __A__</strong></li>
</ul>

<blockquote>
  <p>输出：URL参数a (缺省值为 index)
      等同于全局变量 REQ_A 或 ACTION_NAME
      模板里同样可引入标签 {REQ_A} 或 {ACTION_NAME}</p>
</blockquote>

<hr />

<p><a name="token"></a></p>

<ul>
<li><strong>标签 {__TOKEN__} 或 __TOKEN__</strong></li>
</ul>

<blockquote>
  <p>表单验证令牌标签</p>
</blockquote>

<hr />

<p><a name="note"></a></p>

<h1>常用模板标签：</h1>

<ul>
<li><strong>注释标签：{@note}{/@note}</strong></li>
</ul>

<blockquote>
  <p>{* 这里是模板单行注释，注意不能嵌套大括号 和 星号，不然不会解析。 *}
      这行是正常内容。。
      {* 又是一行注释. *}
      {@note}
      这里都是多行注释 可以放任意字符 包括 大括号 { }
      ...
      {/@note}
      这行是正常内容。。</p>
</blockquote>

<p><a name="asp"></a></p>

<ul>
<li><strong>asp代码执行标签：{asp}{/asp}</strong></li>
</ul>

<blockquote>
  <p>{% 这里是单行asp代码.. %}</p>
  
  <p>{asp 这里是单行asp代码.. }</p>
  
  <p>{asp}
      这里写入多行 asp 代码
      {/asp}</p>
  
  <p>或者直接 用 &lt;% %> 写入asp执行代码
      &lt;%
      ab.c.w "hello world!"
      %></p>
</blockquote>

<p><a name="literal"></a></p>

<ul>
<li><strong>原样输出标签： {@literal}{/@literal}</strong></li>
</ul>

<blockquote>
  <p><code>{@literal}{/@literal}</code>标签, 保持原样输出, 防止模板标签被解析</p>
  
  <p>例如模板里使用花括号可能被解析，要原样输出，可用 {@literal}..{/@literal} 引进来，
      或者用 \{ \} 等字符串表示转义。</p>
  
  <p>e.g. 
      {@literal}
      &lt;li>网站名称 <span class="highlight">{site_name}</span>&lt;/li>
      &lt;li>全局配置里面的Title <span class="highlight">{site_title}</span>&lt;/li>
      {/@literal}</p>
</blockquote>

<p><a name="func"></a></p>

<ul>
<li><strong>函数标签： {: 函数块 }</strong></li>
</ul>

<blockquote>
  <p>{: ab.e.md5.to8( now() &amp; "hash" ) } 等同于 {asp ab.c.echo ab.e.md5.to8( now() &amp; "hash" ) }
      {:URL()} 等同于 {asp ab.c.echo URL()}
      {:ab.e.md5.to8('a')} 等同于 {asp ab.c.echo ab.e.md5.to8("a") }
      注：括号里的 '' 会智能替换为 ""</p>
</blockquote>

<p><a name="include"></a></p>

<ul>
<li><strong>文件包含标签： include 标签 或 template 标签</strong></li>
</ul>

<blockquote>
  <p>{include &#8216;a.tpl&#8217;} 或 {include(&#8217;a.tpl&#8217;)} 或 {template(&#8217;a.tpl&#8217;)}  或{template:a.tpl}</p>
</blockquote>

<p><a name="load"></a></p>

<ul>
<li><strong>载入 css 或 js 标签： {@load href=&#8221;} {@css href=&#8221;} {@js href=&#8221;}</strong></li>
</ul>

<blockquote>
  <p>{@load href='1.css'}
      css 放置的位置 相对于 /statics/css 目录里
      js 放置的位置 相对于 /statics/js 目录里</p>
  
  <p>除此之外另外拓展了 两个标签
      {@css href='1.css'} 加载css
      {@js href='1.js'} 加载js</p>
</blockquote>

<hr />

<p><a name="autoplus"></a></p>

<p><strong>常见标签</strong></p>

<ul>
<li><strong>a. 自增标签、自减标签</strong></li>
</ul>

<blockquote>
  <p>自增标签：
      {asp i++} {i++} {asp i = i + 1} &lt;% i= i+1 %></p>
  
  <p>自减标签：
      {asp i--} {i--} {asp i = i - 1} &lt;% i= i-1 %></p>
  
  <p>注：以下这个标签不是自增标签
      {i+1} 等同于 &lt;% ab.c.echo (i+1) %></p>
</blockquote>

<p><a name="if"></a></p>

<ul>
<li><strong>b. if条件标签</strong></li>
</ul>

<blockquote>
  <p>{if 条件}
      ..
      {else}
      ..
      {/if}</p>
  
  <p>{if 条件}
      ..
      {elseif 条件}
      ..
      {else}
      ..
      {/if}</p>
</blockquote>

<p><em>例 ：</em></p>

<blockquote>
  <p>注： 为了达到和 js形式的 if 语句块，
      特设了 &amp;&amp; 等效代替 And
      特设了 || 等效代替 Or
      特设了 != 等效代替 &lt;>
      特设了 == 等效代替 =
      以及 '' 智能代替为 ""</p>
  
  <p>例： {if i>5 &amp;&amp; i!=7 || k=='on'} {i} {/if}
      解析为： &lt;% if ( i>5  And  i&lt;>7  Or  k="on" ) Then %> &lt;% AB.C.Echo i %> &lt;% End If %></p>
</blockquote>

<p><a name="switch"></a></p>

<ul>
<li><strong>c. switch开关控制标签</strong></li>
</ul>

<blockquote>
  <p>{switch expression}
      {case 条件值1}
      ..
      {case 条件值2}
      ..
      {case else}
      ..
      {/switch}</p>
  
  <p>例： {asp k=3} {switch k}{case 1} 值为1 {case 2} 值为2 {case else} 值为{k} {/switch}
      解析为： &lt;% k=3 %> &lt;% Select Case k %>&lt;% Case 2 %> 值为2 &lt;% Case Else %> 值为&lt;% AB.C.Echo k %> &lt;% End Select %></p>
</blockquote>

<p><a name="foreach"></a></p>

<ul>
<li><strong>d. foreach循环标签</strong>（可循环获取 Array值，Dictionary字典对象 等）</li>
</ul>

<blockquote>
  <p>{foreach i d}..{/foreach}
      等效于：
      &lt;%
      foreach i in d
      ...
      next
      %></p>
  
  <p>如循环输出数组信息：
      {asp ary = array(1,3,4,8)}
      {foreach t ary}
          {t}
      {/foreach}</p>
</blockquote>

<p><a name="while"></a></p>

<ul>
<li><strong>e. while循环标签</strong></li>
</ul>

<blockquote>
  <p>{while 条件} .. {/while}
      等效于 
      &lt;%
      while 条件
      ..
      wend
      %></p>
</blockquote>

<p><a name="loop"></a></p>

<ul>
<li><strong>f. loop循环标签</strong></li>
</ul>

<blockquote>
  <p>{loop 条件} .. {/loop}</p>
  
  <p>{asp i=8}{loop i>0} {i}..{asp i--}{/loop}
      等效于
      &lt;%
      dim i : i = 8
      Do While i>0
      AB.C.Echo i
      ..
      i=i-1
      Loop
      %></p>
</blockquote>

<p><a name="for"></a></p>

<ul>
<li><strong>g. for循环标签</strong></li>
</ul>

<blockquote>
  <p>{for(i=0; i&lt;10; i++)} .. {/for}
      等效于
      &lt;%
      for i=0 to 10-1
      ..
      next
      %></p>
  
  <p>另外，
      {for(i=1; i&lt;=10; i=i+2)} {i} .. {/for}
      等效于
      &lt;%
      for i=1 to 10 step 2
      ab.c.echo i
      ..
      next
      %></p>
  
  <p>另外，
      {for(i=10; i&lt;=1; i--)}
          {i}
      {/for}
      等效于
      &lt;%
      for i=10 to 1 step -1
      ab.c.echo i
      ..
      next
      %></p>
</blockquote>

<hr />

<p><a name="sql"></a></p>

<h1>sql标签块</h1>

<p><strong>不设置分页情况</strong></p>

<ul>
<li>【1】 带sql参数：</li>
</ul>

<blockquote>
  <p>{$rs sql="SQL语句"}
        {$rs('id')} {$rs('title')}
        {$rs['id']} {$rs['title']}
        {rs('id')} {rs('title')}
        {rs['id']} {rs['title']}
      {/$rs}</p>
</blockquote>

<p><em>注：SQL语句中 可以使用变量，形式:  ($var) 或 {$var}</em></p>

<p><em>e.g.</em></p>

<blockquote>
  <p>{asp str = 'a' }
      {$rs sql="select * from #@user where username like '%($str)%' "}
        {$rs['id']} {$rs['username']}
      {/$rs}</p>
</blockquote>

<ul>
<li>【2】 或者只带table参数(不带sql参数)：</li>
</ul>

<blockquote>
  <p>{$rs table="mytable" field="*" where="name like '%a%'" order="id desc"}
          {$rs('id')} {$rs('title')}
      {/$rs}</p>
  
  <p>类似于 {$rs sql=&#8221;select * from #@mytable where name like &#8217;%a%&#8217; order by id desc&#8221;} {rs[&#8217;id&#8217;]} {rs[&#8217;title&#8217;]} {/$rs}</p>
</blockquote>

<p><em>带table参数中，field参数、where参数、order参数 等可不写。</em></p>

<ul>
<li>【3】 或者只带data参数(不带sql、table参数)：</li>
</ul>

<blockquote>
  <p>表示数据来源从 data参数中获取，
      data参数里的值可以是 变量名，也可以是一个函数</p>
</blockquote>

<p><em>例，数据来源是变量：</em></p>

<blockquote>
  <p>{asp set rs_user = M('user')().fetch()}
      {$rs data="rs_user"}
          {$rs('id')} {$rs('username')}
      {/$rs}</p>
</blockquote>

<p><em>例，数据来源是函数：</em></p>

<blockquote>
  <p>{asp function getRs(tb) : set getRs = M(tb)().fetch() : end function}
      {$rs data="getRs('user')"}
          {$rs('id')} {$rs('username')}
      {/$rs}</p>
</blockquote>

<ul>
<li>【4】 此外还支持 offset 偏移量，rows 取数量 等参数：</li>
</ul>

<blockquote>
  <p>{$rs table="mytable" offset="6" rows="4"} .. {/$rs}
      表示：从 mytable 表中 取出 第6+1=7条开始的4条数据，即取 第7~10条数据。</p>
</blockquote>

<p><em>e.g.</em></p>

<blockquote>
  <p>{$rs table="user" field="*" where="id>0" order="id asc" offset="6" rows="4"}
          {$rs('id')} {$rs('username')}
      {/$rs}</p>
</blockquote>

<p><em>等同于：</em></p>

<blockquote>
  <p>{$rs sql="select * from #@user where id>0 order by id asc" offset="6" rows="4"}
          {$rs('id')} {$rs('username')}
      {/$rs}</p>
</blockquote>

<p><strong>设置分页情况</strong></p>

<blockquote>
  <p>必选参数： pagesize， 当 pagesize='0' 或为空 pagesize='' 则继承系统分页设置（默认 10）。
      可选参数： pagemark， 缺省默认为 p，表示URL参数以p作为分页标识符</p>
</blockquote>

<p><em>例：</em></p>

<blockquote>
  <p>{$rs sql="SQL语句" pagesize='10' pagemark='p'}
          {rs['id']} {rs['title']}
      {/$rs}
      分页条码： {@pager data='var' sql='' size='10' mark='p'}</p>
  
  <p>必选参数： count 或 sql 或 data 三者之一，
      若设置 count 且 count > 0 则直接计算传递count为数据总数，
      否则，若设置 data 则传递 data属性里的 data 到 pager分页中，计算data的分页情况，
      否则，最后从 sql 中读取Rs记录集数据，再计算分页情况。</p>
  
  <p>可选参数： size, mark , 设置对应分页条的 pagesize, pagemark 属性。
      缺省继承 var 变量设置的pagesize 和 pagemark，再者缺省继承 系统分页设置（默认 10）</p>
</blockquote>

<p><em>例：</em></p>

<blockquote>
  <p>{@pager data='dict'}
      &lt;div id="wrapbox"><br />===========
      <br /><strong>第{$pager(&#8221;begin&#8221;)}条 - 第{$pager(&#8221;end&#8221;)}条</strong>
      <br />当前：<a href="/index.asp?a=test&amp;p={$pager("no")}">第{$pager(&#8221;no&#8221;)}页</a>
      <br />
      &lt;!--
      <a href="/index.asp?a=test&amp;p={$pager("first")}">首页</a> <br>
      <a href="/index.asp?a=test&amp;p={$pager("prev")}">上一页</a> <br>
      <a href="/index.asp?a=test&amp;p={$pager("next")}">下一页</a>
      <a href="/index.asp?a=test&amp;p={$pager("last")}">末页</a>
      -->
      {$pager("first_s")}
      {$pager("prev_s")}
      {$pager("next_s")}
      {$pager("last_s")}
      <br />===========
      <br />共{$pager("total")}条数据 当前: 第{$pager("no")}页/共{$pager("count")}页 每页显示:{$pager("size")}条
      <br />{$pager("bar")}
      <br />==========
      <br />&lt;/div>
      {/@pager}</p>
</blockquote>

<hr />

<p><a name="arr_rs_dict"></a></p>

<h1>循环标签获取 数组、字典对象、Rs记录对象</h1>

<p><strong>不设置分页情况</strong></p>

<blockquote>
  <p>要循环输出 Array, Dict, Rs 这些数据时， 必选设置必选参数 type=''
      type='arr' 或 type='array' 指定为 Array数组，（带有可选参数 key='i' 缺省为 i ）
      type='dict' 指定为 字典对象Dict，（带有可选参数 key='i' 缺省为 i ）
      type='rs' 指定为 Rs记录集对象，（没有其他参数）
      offset:偏移量，rows:取数量</p>
</blockquote>

<p><em>为了避免 和 pagesize 冲突，请在 不使用分页 pagesize 情况下才 设置索引。</em></p>

<p><em>举例 ：</em></p>

<blockquote>
  <p>{asp set rso = app.dao.query("select top 10 * from #@radio_radio where id>0") }
      {$rso type='rs' offset='0' rows='0' }
          {$rso('id')}
      {/$rso}</p>
</blockquote>

<p><em>例 1, 输出数组：</em></p>

<blockquote>
  <p>{$arr type='arr' key='j' }
          {$arr(j)} 
      {/$arr}</p>
</blockquote>

<p><em>例 2, 输出字典：</em></p>

<blockquote>
  <p>{$dict type='dict' key='j' pagesize='15' }
          {$dict(j)}
      {/$dict}</p>
</blockquote>

<p><em>例 3, 输出rs记录：</em></p>

<blockquote>
  <p>{asp set rso = app.dao.query("select top 10 * from #@radio_radio where id>0") }
      {$rso type='rs' pagesize='2' }
          {$rso('id')}
      {/$rso}</p>
</blockquote>

<p><em>下面分页显示（注 上面必选设置 pagesize 参数）：</em></p>

<blockquote>
  <p>{@pager data='dict'}
          &lt;div id="wrapbox">
          <a href="/index.asp?a=test&amp;p={$pager("first")}">首页</a> <br>
          <a href="/index.asp?a=test&amp;p={$pager("prev")}">上一页</a> <br>
          <a href="/index.asp?a=test&amp;p={$pager("next")}">下一页</a>
          <a href="/index.asp?a=test&amp;p={$pager("last")}">末页</a>
          &lt;p>共{$pager("total")}条数据 当前: 第{$pager("no")}页/共{$pager("count")}页 每页显示:{$pager("size")}条
          {$pager("bar")}
          &lt;/p>&lt;/div>
      {/@pager}</p>
</blockquote>

<p><em>输出rs记录集元素、字典元素 的项值：</em></p>

<blockquote>
  <p>标准写法：
      {$rs('title')} （推荐）</p>
  
  <p>拓展写法：
      {$rs.title} （推荐）
      {$rs[0]}
      {$rs(0)}
      {$rs['title']}
      {$rs[title]}</p>
  
  <p>调用函数写法：
      a.标准版：
      {:stdTime(rs('addtime'))} </p>
  
  <p>b.拓展版，带参数：
      形式如： {$obj.att1.att2.att3...|userfunc=param1,param2,...,###,...,paramN}</p>
  
  <p>例：
      {$rs.addtime|stdTime=###}（推荐）</p>
  
  <p>当函数只有一个参数时，又可以省略(=)号后面的字符。例：
      {$add_time|stdTime=###} 可以省略成： {$add_time|stdTime}</p>
</blockquote>

<p><strong>总结</strong></p>

<p>1、要循环输出dict字典对象，可以 foreach 标签 或 dict标签块
<code>{foreach k dict} .. {:dict(k)} .. {/foreach}</code>
<code>{$dict type='dict' key='i'} .. {:dict(i)} .. {/$dict}</code></p>

<p>2、要循环输出arr数组，可以 foreach 标签 或 arr标签块
<code>{foreach i ary} .. {$i} .. {/foreach}</code>
<code>{$ary type='arr' key='j' } .. {ary(j)} .. {/$ary}</code></p>

<p>3、要循环输出rs数据集，用rs标签块
<code>{$rs type='rs'} .. {$rs('id')} .. {/$rs}</code></p>

<hr />

<p><a name="empty"></a></p>

<h1>特殊标签用法</h1>

<p><strong>a. {@empty} 、{@noempty} 指令标签</strong></p>

<blockquote>
  <p>{@empty for='var'}..{/@empty}
      {@noempty for='var'}..{/@noempty}</p>
</blockquote>

<p><em>说明：</em></p>

<blockquote>
  <p>{@empty}用于对象为空 或 记录为空情况下，输出代替内容
      {@noempty}用于数据不为空情况下，输出内容
      必选参数 for=''</p>
</blockquote>

<p><em>例 ：</em></p>

<blockquote>
  <p>{@empty for=&#8217;var&#8217;} 暂无记录！{/@empty}</p>
</blockquote>

<p><em>又例 ：</em></p>

<blockquote>
  <p>{@noempty for=&#8221;rs(&#8217;img&#8217;)&#8221;}&lt;img src=&#8221;{$rs(&#8217;img&#8217;)}&#8221; /&gt;{/@noempty}</p>
</blockquote>

<p><em>{@empty} {@noempty} 标签可以合并条件为：</em></p>

<blockquote>
  <p>{@empty for='var'}..{@else}..{/@empty}
      {@noempty for='var'}..{@else}..{/@noempty}</p>
</blockquote>

<p><a name="count"></a></p>

<p><strong>b. {@count} 指令标签</strong></p>

<blockquote>
  <p>{@count data=''}
      {@count sql=''}
      {@count table='' where=''}</p>
</blockquote>

<p><em>例 ：</em></p>

<blockquote>
  <p>{@count table=&#8217;user&#8217; where=&#8217;id>0&#8217;} 等同于 {@count sql=&#8217;select * from #@user where id>0&#8217;}</p>
  
  <p>{asp set rs = App.Dao.Query("select top 10 * from #@radio_radio") }
      共 {@count data='rs'} 条记录
      电台总数( {@count sql='select * from #@radio_radio'} )</p>
</blockquote>

<p><em>注：sql语句中 含有#@符号 表示用于代替 数据表前缀</em></p>

<p><a name="assign"></a></p>

<p><strong>c. {@assign} 标签，模板中赋值传递变量</strong></p>

<p><em>用法：</em></p>

<blockquote>
  <p>这里写 按需加载显示的 js 文件...如：
      {if show_dialog=1}
        {@load href="<strong>JS</strong>/jquery/plugins/jquery.artDialog.js"}
      {/if}
      {if show_validator=1}
        {@load href="<strong>JS</strong>/jquery/plugins/formvalidator.js"}
      {/if}
      这里写 按需加载显示的 css 文件...如：
      {if show_css=1}
      {@load href="<strong>CSS</strong>/admin/style.css"}
      {/if}
      ..
      ..
      ...
      {@assign var="show_dialog" value="1"}
      {@assign var="show_validator" value="0"}
      {@assign var="show_jqueryform" value="0"}
      {@assign var="show_css" value="1"}</p>
</blockquote>

<hr />

<p><a name="multidb"></a></p>

<h1>多库查询</h1>

<p><strong>在 sql标签块 中加入参数 conn，表示传递一个 Connection 对象的变量</strong></p>

<blockquote>
  <p>{asp}
      Dim db, newConn
      Set db = AB.db.New
      db.Conn = db.OpenConn(1, cfg_sitepath &amp; "Data/#test.mdb", "")
      Set newConn = db.Conn
      {/asp}</p>
  
  <p>{$rs sql="select * from #@table1 where id&lt;=1000000 order by id asc" pagesize="10" pagemark="p" offset="0" rows="0" conn="newConn"}
          {$rs("id")} - {$rs("aaaa")} - {$rs("bbbb")} - {$rs("cccc")}
      {/$rs}
      {@empty for='rs'}暂无记录！{/@empty}</p>
</blockquote>
<script type='text/javascript'>
$(document).ready(function(){
  if($('code').length>0){
    $('code').parent().addClass('prettyprint');
    prettyPrint();
};
});
</script>
</body>
</html>